System and apparatus for geo-location based data analysis

ABSTRACT

A device and a backend server are described. The device can determine whether it has entered an indoor location, and once in the indoor location, the device can communicate with the server the name of the location. The device can determine the current location of the user in the indoor location, and based on the floorplan and the indoor location of an item, the device can direct the user to the item. The floorplan can be constructed based on data accumulated from various visitors of the indoor location.

BACKGROUND

Advancements in the Global Positioning System (“GPS”) technology haverevolutionized transportation and flow of commerce. However, GPStechnology has its limits because it is dependent on receiving anunobstructed line of sight to four or more GPS satellites. Obstaclessuch as buildings block the relatively weak GPS signals. As a result,the GPS technology has not been accessible for indoor purposes.

SUMMARY

There are various obstacles in implementing an indoor GPS system. Oneproblem with an indoor GPS navigation system is that, unlike roads andintersections which can be mapped and recorded by autonomous vehicles,indoor floorplans are largely unknown. Even if the indoor layout of alocation is known, the layout can change quickly, e.g., the propertyowner might remodel the interior of the building. Therefore, it is anobject of the present invention to overcome these technical difficultieswith an indoor navigation system which relies on accurate floorplans forindoor spaces.

At the same time, with the expansion of Internet transactions, thedemand for in-store products and services has been weak. To address thisissue, retailers and other stores have encouraged customers to visittheir locations because customers who visit stores are more likely tomake in-store purchases as opposed to online. For example, some storeshave offered coupons to encourage customers to visit their locations.Other stores have created loyalty programs which reward customers forpurchasing a product from the store. However, these programs have failedto attract customers back to stores because these programs fail todynamically address customers' needs and demands. Specifically, couponstarget customers in general and it is difficult to customize a coupon toaddress the specific needs of a particular customer. Regarding therewards programs, these days an average customer owns many rewardsaccounts such that it difficult for the customer to keep track of theseaccounts. As such, customers oftentimes forget about their rewardsaccounts and fail to use them at all. Therefore, it is beneficial toprovide a system which can respond to customer needs and demands in adynamic fashion.

To address these issues, a system, apparatus and method including aDevice (device, smart device or gadget) and a backend server aredescribed. The Device can determine whether it has entered an indoorlocation, and once in the indoor location, the Device can communicatewith the server the name of the location. Based on the name of thelocation and a customer profile associated with the user, the servertransmits a communication to the user which can include a product name,an indoor location of the product and a floorplan for the indoorlocation. The Device can determine the current location of the user inthe indoor location, and based on the floorplan and the indoor locationof the product, the Device can direct the user to the product identifiedin the communication. The server can obtain the floorplan from theoperator of the indoor location. Alternatively, the server can createthe floorplan based on an analysis of user purchases and user movementsin the indoor location.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an exemplary floorplan for a retail store.

FIG. 2 is a user interface of an application according to an exampleembodiment.

FIG. 3 shows example directions provided to the user of the application.

FIG. 4 displays an example redeemable certificate displayed on the userinterface of the application.

FIG. 5 shows an example process flow for providing indoor directions toa user.

FIG. 6 illustrates exemplary hardware components a server or a Device.

DETAILED DESCRIPTION

The Indoor Trigger Process

A user's Device can be configured to determine whether the device hasentered an indoor location. The Device (or device or smart device) canbe a smartphone, cell phone, a laptop, a desktop, a notebook, a tablet,a wearable device, etc.

In an example embodiment, the Device can determine whether the Devicehas entered an indoor space based on a reception deterioration of GPSsignals. Many Devices including smartphones can receive GPS signals, anddetermine a user's location based on the received GPS signals. However,GPS signals become weaker and less accurate when a user enters an indoorspace because the indoor space can be circumscribed by walls, roofs andother building structures. This deterioration of GPS signals canindicate to the Device that the user's Device has entered an indoorspace. Specifically, an antenna of a Device can receive the GPS signalsand a processor of the Device can determine the strength of the signalsreceived. When the Device enters an indoor space, the GPS signalsweaken. The processor of the Device can determine this change in thestrength of the GPS signals. Therefore, the processor can trigger asignal which indicates that the Device has entered an indoor space.

In an example embodiment, the Device can determine whether the Devicehas entered an indoor space based on a Wi-Fi signal strengthening. Withthe advent of Internet technology, many indoor spaces are provided withat least one Wi-Fi network to facilitate Internet connectivity. When aDevice approaches an indoor space, the Device can discover the signalassociated with the Wi-Fi networks, and this signal rapidly strengthensas the user enters the indoor space. For example, an antenna of theDevice can receive the Wi-Fi signals and a processor of the Device candetect that the signals are strengthening. Therefore, the processor ofthe Device can determine that the Device is in an indoor space bydetecting a sudden increase in the strength of at least one Wi-Fisignal.

In an example embodiment, the Device can determine whether the Devicehas entered an indoor space based on the detection of an inaudible sonicsignal or sound. The indoor space can include a sound generator whichcan generate specified sonic signals that are inaudible to humans butaudible to Devices such as cellphones. The sounds can be at a frequencyabove the common range of human hearing, e.g., at least 18 KHz. Uponentering the indoor space, a microphone or speaker of the Device candetect the specified sonic signals, and this detection can enable thedetermination that the Device has entered an indoor space. Thisdetermination can be made by a processor of the Device. Similarly, adetection of a minimum threshold sonic signal strength, or a rapidincrease in the strength of a sonic signal, can trigger a determinationthat the Device is in an indoor space.

In an example embodiment, the Device can determine whether the Devicehas entered an indoor space based on a change in the acoustic propertiesof the environment. For example, when a Device is entered an indoorspace, the Device can detect acoustic echoing between the walls, floorsand ceilings. The Device can determine the echoing by, e.g., generatinga sonic signal of a specific frequency by a speaker of the Device anddetermining whether it can detect the sonic signal. The determinationcan be made by a processor of the Device. If the Device detects a levelof echoing more than a threshold value, the Device can determine thatthe Device is in an indoor space.

In an example embodiment, the Device can determine whether the Devicehas entered an indoor space based on the detection of a magnetic fieldor an electric field. In general, a magnetic field or an electric fielddoes not exist in an outdoor space, and thus, a change in either fieldcan indicate that the Device is in an artificial environment, e.g., anindoor space. Many stores place an alarm gate at the entrance. Whenpassing through these gates (or elsewhere in an indoor space), there canbe a significant fluctuation in the magnetic field or the electric fileddetected by the Device. An antenna of the Device can detect the magneticor electric field and a processor can determine a change in the magneticor electric field. The processor can trigger a signal which can indicatethat the detected magnetic or electric field has fluctuated. Therefore,the Device can determine that the user has entered a store or has exiteda store based on a processor determination of a change in detection ofmagnetic or electric field.

In an example embodiment, the user can notify the Device that the Devicehas entered an indoor space. For example, upon entry into a store, theuser can press a button or an icon on the user's Device to indicate thatthe Device has entered an indoor space. As another example, the user canscan a bar code or some other sign to convey to the Device that the userand the Device are in an indoor space.

In an example embodiment, a Device can combine the methods describedabove for detecting whether a user has entered an indoor space. Forexample, a Device can consider a deterioration in GPS signal coupledwith an increase in strength of a Wi-Fi signal to determine that a userhas entered an indoor space. However, the Device might reach a differentconclusion if only a deterioration in GPS signal is detected or anincrease in strength of a Wi-Fi signal is detected.

While this disclosure listed a few methods for determining or detectingwhether a Device has entered an indoor space, this list is notexhaustive and one of ordinary skill in the art recognizes that therecan be other techniques for making this determination.

The detection of whether the Device has entered an indoor space can beactive or passive. Active detection can be requested by the user of theDevice. For example, the user can request the Device to determinewhether the Device has entered an indoor space by evaluating the GPSsignals or Wi-Fi signals received. Alternatively, the user can notifythe Device that the Device has entered an indoor space. Passivedetection can be done by the Device. Specifically, the Device cancontinuously or intermittently evaluate whether the Device has enteredan indoor space. For example, a Device can continuously look for a GPSsignal, Wi-Fi signal, magnetic field, electric field, etc. In someembodiments, the Device can intermittently look for these signals, e.g.,once every few minutes.

In these disclosures, it is assumed that the user carries the Devicewith the user, and thus, the Device is at the same location as the user.However, in some embodiments, one does not need to make this assumption,and the location of the user can be different from the location of theDevice.

Identifying the User and the Indoor Location

A sever in communication with the user's Device can identify the user ofthe Device. For example, the server can determine the name or accountnumber of the user. The server can also ascertain a name (or anidentifier) of the indoor location. For example, the server candetermine the name of the business operating at the indoor location.

In some embodiments, the identification of the user and the indoorlocation can include two parts. In the first part, the user's Device candetect a signal or other indicator at the indoor location. In the secondpart, the user's Device communicates the user's identity and thedetected signal (or indicator) to the server. In some embodiments, thiscommunication is triggered by the Device's determination that the Devicehas entered an indoor space. The Device can convey the user's identityto the server by transmitting, for example, the user's name, anidentification number associated with the user, an account number, orother piece of information facilitating the identification process bythe server. The detected signal (or other indicator) at the indoorlocation and how it facilitates identification of the indoor locationwill be described below.

In an example embodiment, the identification of the location isfacilitated by the last GPS signal received by the user's Device. Forexample, prior to or even after entering the location, the user's Devicecan receive and store a GPS signal indicating the GPS coordinates of theuser's Device (“user's coordinates”). Using an application, the user'sDevice can communicate the user's coordinates to the server. Thiscommunication can optionally be triggered by the determination that theDevice is in an indoor space. The server can look up the received GPScoordinates and determine a name or an identifier for the location. Oneor more databases of the server can include this information. Forexample, for a large retail shop which does not include any buildings orbusinesses adjacent to it, the last GPS signal received by the Deviceprobably indicates that the Device is close to or at the door of theretail shop. Because there are no buildings next to the retailer, therewould not be any confusion as to the name of the retail shop associatedwith the GPS signal. Therefore, the last GPS signal received by theDevice can easily identify the retailer.

The process of matching the user's coordinates with the name of thelocation can include matching the user's coordinates with the known GPScoordinates of a device installed at the location. For example, adatabase of the server can include information such as the names ofvarious businesses and the GPS coordinates of the point-of-sale (“POS”)devices installed at these businesses. This information can be obtained,for example, by analyzing past purchases of customers at variouslocations. Specifically, one can analyze customer purchases and the GPScoordinates registered by their Devices at the time of each purchase todetermine a database of GPS coordinates of POS devices installed at eachlocation.

When the server receives the user's coordinates, the server can searchfor matching GPS coordinates, and based on that, the server can identifythe business operating at the user's location. If an exact match was notfound, the server can consider the closest match for the user'scoordinates, e.g., the server can find matches within a tolerance rangeof the user's coordinates. For example, the server can look for abusiness that has the closest GPS coordinates to the user's coordinates.This can be helpful particularly when the last GPS signal received bythe user's Device was recorded just outside of the business (and notexactly at the business). In the case of the retail shop which did nothave any businesses adjacent to it, this method can easily identify theretail shop.

In another example embodiment, the identification of the location isfacilitated by a Wi-Fi signal received by the user's Device. Many Wi-Finetworks can transmit a specific service set identifier (“SSID”) (oranother identifier, which can be a unique identifier). When a Deviceenters a store, the Device can discover the SSID of the Wi-Fi networkthat is broadcasted throughout the store. The Device can transmit theSSID of the network to the server. The server can include a databasestoring the location names or identifiers associated with SSIDs. In someembodiments, each SSID can be unique such that it is associated withonly one location. Therefore, matching an SSID with an entry on thedatabase uniquely identifies the name or identifier of the location.

In other embodiments, the SSIDs are not unique. In these embodiments, inaddition to SSIDs and location names (or identifiers), the database caninclude GPS coordinates associated with each location name (oridentifier) and SSID. The Device can transmit an SSID and the user'scoordinates to the server. Using the user's coordinates, the server cannarrow the number of SSIDs available and then match the received SSIDwith the name (or identifier) of a location included on the narrowedlist. Using this method, there is a high likelihood that only one name(or identifier) of location can be found for the SSID received by theserver.

In another example embodiment, the identification of the location isfacilitated by the music played at the location. In these embodiments,each location can play a predetermined playlist and the database caninclude this playlist for each location. The user's Device can record aportion of the music track played at the location. In one embodiment,the user's Device can identify the music track, for example, by name,and transmit to the sever the name of the music track and the time whenthe Device made the recording. In another embodiment, the user's Devicecan transmit to the server the recorded portion of the music track andthe time when the Device made the recording. The sever can look up allthe music tracks played at the recording time, and by comparing the nameof the recorded track to the names stored on the database, the servercan identify the name of the location.

In an example embodiment, the identification of the location isfacilitated by detection of an inaudible sonic signal emitted inside thelocation. For example, the inaudible sonic signal can encode a numericidentifier or a store identifier and this information can be received bythe user's Device. A microphone or speaker of the Device can detect theinaudible sonic signal. This detection can occur, e.g., once the devicereceives a signal that the Device has entered an indoor location.Alternatively, the Device can listen for inaudible sonic signals all thetime, or periodically. As yet another example, the Device can listen forinaudible sonic signal when a user activates a listening mode on anapplication of the Device. In response to detection of the inaudiblesonic signal, a processor of the Device can determine the storeidentifier, the user's Device can transmit the store identifier to theserver, and the server can ascertain the identity of the store based onthe store identifier provided by the user's Device.

In some embodiments, the location transmitter can broadcast a variablesonic signal which has a variable numeric identifier. The numericidentifier can change based on the time of day or week the user visitsthe location. Variable numeric identifiers can be beneficial, forexample, to signal a message to the server. For example, a variablenumeric identifier can signal to the server that the store has a salepromotion going on and that the server can recommend a coupon to theuser. As another example, a variable numeric identifier can prevent(unauthorized) users from receiving product recommendations withoutactually visiting the store. Because the numeric identifier changes overtime, unless the user visits the store, the user would not be able tocommunicate to the server the correct numeric identifier, and hence theuser would be prevented from receiving product recommendations.

In an example embodiment, the identification of the location isfacilitated by a unique identification code of the user's Device. Forexample, when a user walks into an indoor location, the user's Devicecan transmit a request for connection to an access point. The accesspoint can be a Wi-Fi, Bluetooth or cellular access point. A transmitterof the Device can transmit the request using a Wi-Fi, Bluetooth orcellular communication.

In some embodiments, the request can include the unique identificationcode of the user's Device. In other embodiments, upon connection to theaccess point, the user's Device transmits the unique identification codeto the access point of the indoor location. Once the access pointreceives the unique identification code, it relays it to the server. Inaddition, the access point can transmit to the server an identifier forthe location at which the access point is located. Using the user'sunique identification code and the location identifier, the server canidentify the user and the indoor location. Specifically, the server caninclude a database which has the unique identification code for all ofits users and all of the location identifiers for the indoor locations.The server can look up the user's unique identification code and thelocation identifier to identify the user and the indoor location.

Indoor Location Detection

In some embodiments, the user's Device is configured to determine auser's specific location within the indoor location. For example, if auser is visiting a department store, the user's Device can determinewhich department in the store the user is visiting. The Device candetermine the user's specific indoor location based on the Device'srelative location compared to the location of one or more wirelessaccess points (i.e., localization of the Device relative to the accesspoints). RSSI, Fingerprinting, Angle of Arrival (“AoA”) and Time ofFlight (“ToF”) are four exemplary techniques which can facilitate thisdetermination. In these embodiments, the Device can be connected to oneor more wireless access points at the indoor location and perform any ofthe named localization techniques to determine the relative location ofthe Device.

In the RSSI technique, the intensity of the received signal is measuredfrom several different access points. Subsequently, a propagation modelis used to determine the distance between the Device and each accesspoint. Then, trilateration techniques can be used to calculate theestimated Device position relative to a known position of the accesspoints. The Fingerprinting technique includes two steps. In the firststep, at various locations in the building, a collection of Wi-Fisignals from the access points is sampled to create a positionfingerprint. In the second step, which is the online positioning step,fingerprint information is collected around the position to be localizedand compared with the sampled position fingerprint. In the AoAtechnique, multiple antennas are used to estimate an angle of arrival ofthe multipath signals received at the antenna arrays in the accesspoints. Subsequently, the triangulation technique is used to calculatethe location of the Device. In the ToF technique, a travel time for asignal to the Device and a return time from the Device is measured.Using these measurements, the distance between the Device and the accesspoint is determined, and hence, a trilateration technique can be used tocalculate the estimated position of the Device relative to the accesspoints.

The User's Financial Account

In an example embodiment, the user can have an account with the serviceprovider, and the account can hold a monetary balance. The balance canbe denominated in, e.g., a national currency, a credit card point valueor a cryptocurrency. For example, the account can be a checking accountor a saving account held with a financial institution, and the user canmaintain certain funds with the financial institution. As anotherexample, the account can be a rewards account associated with a creditcard company, and the balance of the account can reflect the rewardspoints that the user has accumulated over time. As yet another example,the account can be a cryptocurrency wallet in which the user maintains anumber of cryptocurrency coins.

The details of the account can be maintained in a database of theserver. For example, the database can include the balance for eachchecking or saving account maintained by the financial institution. Asanother example, the database can include the balance for each rewardsaccount maintained by the credit card company. As yet another exampleembodiment, the database can be a hosted wallet including the privatekey for the user's cryptocurrencies.

The sever can receive a communication from the user's Device includingthe user's identity. Based on the user's identity, the server can searchthe database and determine an account balance for the user. In anexample embodiment, the service provider is the owner of the server andhas access to the users' accounts.

The User's Profile and Customer Profile

In an example embodiment of the present disclosure, a user can sign upfor an online account with a service provider. The user can decide toopen up the online account for a variety of reasons. For example, a usermight decide to sign up for an online account because the user intendsto review the user's information (e.g., account balance or purchasehistory) on the website of the service provider. As another example, theuser might decide to sign up for an online account because the userdesires to conduct online transactions on the service provider'swebsite. The service provider can be an online retailer, a financialinstitution, a credit card company, a cryptocurrency exchange, etc. Insome embodiments, the service provider can require the user to visit theservice provider's website to sign up for the online account. Thewebsite can have a link, a button, a web page or other surfing indiciawhich can direct the user to enter the user's information. Thisinformation, for example, can include the user's name, email address,username and password. In some embodiments, the signing up process cantake place using an application (or app) of the service provider. Theuser can visit the service provider's website and download the serviceprovider's application. The user can run the service provider'sapplication on the Device and open up the account using the application.

In an example embodiment, a user can create a user profile. The userprofile can be created when the user is signing up for the account orafter the user signs up for the account. The user profile can includevarious information about the user. For example, a user profile caninclude the date of birth of the user, gender, address, photo, etc. Theuser profile can also include the user's username or password. The usercan express the user's preferences in the user profile. For example, auser can customize a user profile to indicate the products, locations,or activities that the user is interested in. The content of a userprofile can change over time. For example, a user can update, modify orchange the content of the user profile or add new content to the profileto reflect a change in the user's preferences or taste.

In an example embodiment, the service provider can create a customerprofile for the user. The customer profile can be stored on a databaseof the service provider's server. The customer profile can existregardless of whether the user creates a user profile. The customerprofile can be available for the user to see or modify, but in someembodiments, the customer profile might not be available to the user. Insome embodiments, the customer profile can be consolidated with the userprofile so that there is only one profile associated with the user. Thecustomer profile can include certain information about the user, and theservice provider can dynamically add information to the customerprofile. This information can include an interaction history of the userwith the service provider, an analysis of the user's behavioralcharacteristics, a regression analysis and other analysis pertaining tothe user's traits, habits or preferences. The customer profile can alsoinclude information from the user profile of each respective user. Usingthe information included in the customer profile, the server can makepredictions about the user's preferences and make recommendations to theuser.

For example, a service provider can be a credit card company. The creditcard company has access to each user's prior purchases and can create aprofile for the user's spending habits. The credit card company can alsohave access to the user's profile, which can include the user's age,gender, income, address, occupation, etc. Using the customer profile andthe user profile, the server can make predictions about the user'sfuture purchases, and thus, make recommendations or suggestions to theuser.

The Goods and Services

In an example embodiment, an operator of a location can compile a listof products and services available at the location. In some embodiments,the operator can also prepare a floorplan of the indoor space. Theoperator can also associate an indoor area in the floorplan with eachone of the products or services listed. The list of products andservices can include other information as well. For example, the listcan include a price for each item, a discount rate, a classification ofthe product, a profile of a typical customer who is interested in theproduct and the quantity of the product available for sale. The operatorof the store can transmit all of this information to the server of theservice provider.

FIG. 1 shows an exemplary floorplan 100 for a retail store. The retailstore can compile a list of some of the products available for sale atthis store. This list can include three products: dresses, blazers andhats. The floorplan 100 can include three areas designated as includingthese products. The list can indicate that the dresses are placed atarea 101, the blazers are placed at area 102 and the hats are placed atarea 103. The list can also indicate that typically girls are interestedin the dresses, but boys are interested in the blazers and hats. Theretail store can transmit the list and the floorplan to the server ofthe service provider.

Product Recommendation

In an example embodiment, the server can determine productrecommendations for the user based on the user's account balance, thecustomer profile, the location and the goods and services available atthe location. Specifically, the server can rank all the goods andservices available at the location based on the user's preferences andhabits indicated in the customer profile. The server can decide to makea recommendation if the highest ranked good or service falls within theuser's budget as indicated by the user's account. If the highest rankedgood or service falls outside of the user's budget, the server recommendthe next highest ranked good or service that falls within the budget ofthe user. In some embodiment, the server can make a recommendation basedon the profiles of typical customers for the goods and services. Theseprofiles can be provided by the location operator.

For example, a user's customer profile can indicate that the user is amale in his 20s who is interested in hats and plays tennis. Theinformation may have been compiled from a variety of sources, e.g., theuser's prior purchases, the user's expressed preferences in the user'sprofile, etc. If the user visits the retail store of FIG. 1, the servercan recommend a hat to the user. However, if the user visits a secondretail store which carries tennis racquets, the server can recommend thetennis a racquet to the user. In some embodiment, the server canrecommend a hat to the user even in the second store. Thisrecommendation can be influenced by the user's prior purchase historywhich includes many hats.

In an example embodiment, product recommendations can be based on atleast one of the following: past purchase history of the customer orother customers with similar profiles; purchase trends (which can begeneral trends, or trends for a specific product, location or customerprofile); frequently of visits to specialty stores (e.g., makeup,sporting goods, etc.); information that is volunteered by the customer;information the customer volunteered to the customer's loyalty program;and the customer's banking information (e.g., transaction history).

The Application

A user's Device can include an application. The application candetermine whether the user is in an indoor space, and this determinationcan trigger a communication to the server of the service provider. Thecommunication can include an indicator or identifier based on which theserver can determine the name of the location from which thecommunication was received. The communication can also include anidentifier for the user, and the server can identify the user based onthis identifier.

In an example embodiment, upon determining the name of the location, theserver is configured to determine the products or services available atthe location. This determination can be based on a list provided by thelocation operator. The server is also configured to determine theavailable balance for the account of the user. Based on this balance,the customer profile for the user and the list of products or servicesavailable, the server can transmit a communication to the application.This communication can include for example, a product or service that isthe most relevant to the user based on the user's customer profile. Thecommunication can also include an area identifier for the product orservice and possibly a floorplan of the location.

The application is configured to display a notification to user. Thisnotification can be based on the communication that the applicationreceived from the server. In some embodiments, the notification canindicate that a product or service is available for the user, and thatthe user has enough funds or points in the user's account to purchasethe product or service. The notification can also indicate where theproduct or service is located in the location.

FIG. 2 is a user interface 200 of an application according to an exampleembodiment. The user interface 200 is displaying a notification 201,which can include a product and price indicator 202, an area indicator203 and a floorplan 204. In this example embodiment, the user isvisiting a retail store which sells dresses, blazers and hats. Theservice provider is a credit card company and the user maintains arewards account with the credit card company. The server determined thathats are the products that are the most relevant to the user based onthe user's customer profile and the points balance of the user's rewardsaccount, i.e., the user has enough points to purchase the hat. Thus, theserver transmitted a notification to the user's Device. The Devicedisplayed the notification 201, which displays “Hats are on Sale! Get ahat for only 300 points!” as the product and price indicator 202. Thenotification 201 also displays “Find your favorite hats in Area 103” asthe area indicator 203. The notification 201 further displays thefloorplan 204 for the retail store.

In some embodiments, the application can provide directions for the userto find the product or service included in the notification. The usercan request the application to direct the user to the indoor area wherethe product or service is placed. The application can use any of thefollowing techniques to determine the current indoor location of theuser: RSSI, Fingerprinting, AoA and ToF. Using the floorplan of theindoor space, the indoor area indicator for the product and the currentindoor location of the user, the application can determine the fastestroute to that indoor location.

In FIG. 2, the user can tap on the floorplan 204, and the applicationcan direct the user to the area where hats are placed. FIG. 3 showsexample directions provided to the user of the application. In thisembodiment, the user interface 200 displays the floorplan 301 providedby the retail store. The user's location indicator 302 displays theuser's current location in the indoor space. This location can bedetermined by any of the above described techniques. The hats, i.e., therecommended products, are located in area 103 of the floorplan 301. Theapplication can display directions 303 on the user interface 200 of theapplication. These directions can be static, e.g., the directions can bea drawing on the floorplan or a list of written steps which the user canread and follow. These directions can be dynamic, e.g., the userinterface can show the user's movements on the floorplan 301 or directthe user (e.g., tell the user) to walk in a specific direction.

In an example embodiment, an indoor location operator can issue a couponfor a specific product or service. The operator can communicate thiscoupon to the server of the service provider. When the server receives acommunication that a user is in the indoor location, the serviceprovider can transmit the coupon with a notification. Specifically, ifthe server determines that the product or service (for which there iscoupon) is the highest ranked product or service that can be afforded bythe user, the server transmits a communication including the product orservice and the coupon. For example, in FIG. 2, coupon 205 states “Use a10% coupon when buying a hat!” This coupon relates to the products,i.e., hats, that the server recommended to the user based on thecustomer profile of the user. Because the selection of the product isbased on the user's preferences, the coupon will highly likely result ina sale for the location operator. Therefore, this can be a veryeffective advertising method.

In an example embodiment, the user can ask the application to facilitatea payment to the location operator for a product or service. The paymentcan be facilitated, for example, if the application can display acertificate which can be redeemed at the indoor location. As such, in anexample embodiment, when the user receives the notification, the usercan select an option for receiving a certificate redeemable at theindoor location. In FIG. 2, the user can tap on the certificate button206 to receive a certificate redeemable at the retail store. When theuser taps on this button, the application can display another page tothe user. On the certificate redeem page, the user can specify whetherthe user intends to use any coupons in connection with the certificate.The application can then submit a request to the server. Upon receivingthis request, the server can confirm whether the user's account holdssufficient funds to honor the user's request. In response, the servercan transmit a communication to the user. The application is configuredto receive this communication and display it on the user interface ofthe application. For example, the application can display thecertificate as a barcode, which can be scanned and redeemed at a cashregister of the indoor location. FIG. 4 displays an example redeemablecertificate displayed on the user interface 200 of the application. Inthis example embodiment, the redeemable certificate is displayed as aquick response code 401. Although a quick response code is depicted asthe redeemable certificate in this example embodiment, one of ordinaryskill in the art recognizes there can be other means to display aredeemable certificate. For example, any optical, machine-readable,representation of data can be used as a redeemable certificate. Barcodes are an example of such representations. Additionally, text stringscan also be used as redeemable certificates.

In an example embodiment, the application can have a search functionwhich can enable a user to search for the products or services availableat the location. This search function can be based on the list ofproducts or services communicated to the server by the locationoperator. The server can automatically transmit the list to theapplication. Other means of transmitting the list to the application isalso conceivable. For example, the list can be transmitted to the userif the user activates the search function. The list can include variousproducts or services for sale, their respective prices and otherinformation. The application can include a search tab and upon tappingon the search tab, the application can display a search bar to the user.The user can search for a product or service by typing keywords in thesearch bar. The search function can return a list of products orservices that match the search criteria. Each item on the returned listcan include a price for the item and a location indicator, whichindicates where the product is located. In some embodiments, the usercan tap on an item on the returned list, and the application isconfigured to direct the user to the area of the indoor location whichhas the selected product. The application can provide a dynamic orstatic direction to the user.

In an example embodiment, the application is configured to store a logof a user's movements. For example, the application can store the GPScoordinates of a Device for a period of time. The user can make apurchase using the account the user has with the service provider. Aftermaking the purchase, the service provider can send a communication tothe application requesting the user's GPS coordinates at the time of thepurchase. The application can be configured to transmit the user's GPScoordinates at the time of the purchase. By gathering the data relatingto the user's GPS coordinates and matching them with the names of thelocations at which the user made the purchases, the service provider canbuild a database including the names and GPS coordinates of variousindoor location operators. If the GPS coordinates of the user at thetime of the purchase is not available, e.g., the indoor location doesnot receive GPS signals, the application can transmit the last know GPScoordinates of the user at the time of the purchase.

In an example embodiment, the service provider can construct a floorplanfor an indoor location using the data provided by the application.Specifically, the application can store a log of a user's movementsinside an indoor location. The log of the user's movements can includethe relative locations of the user at the time of the visit compared tothe location of one or more wireless access points. The server canrequest this information from the application and the application cantransmit this information to the server. The server can receive thisinformation from the applications of multiple users and aggregate thisdata. Using the aggregated data, the server can construct a floorplan ofthe indoor location.

Additionally, the indoor location operator can provide the serviceprovider with a list of products and services purchased by each userwhen the user visited the indoor location. The service provider can alsorequest the movement log of each one of the users when they visited theindoor location. Using the list of products and services purchased byeach user and their respective movement log, the service provider candetermine the location of the products offered by the store.

FIG. 5 shows an example process flow for providing indoor directions toa user. In this example embodiment, in step 501, a user enters an indoorspace and the user's Device determines that the user has entered theindoor space. This determination can be made in response to detecting astrengthening Wi-Fi signal by the Device. The Device detects the SSIDassociated with the Wi-Fi signal, and in step 502, the Device transmitsthis SSID and the user's identification number to the server. In step503, based on the SSID provided by the Device, the server determines thename of the indoor location from which the user transmitted thecommunication. In step 504, the server determines which products areavailable at the indoor location and based on the user's customerprofile and account balance, the server determines which product torecommend to the user. In step 505, the server transmits the recommendedproduct, an indoor location for the product, and a floorplan for theindoor location. In step 506, the user requests the application toprovide directions for the user to the recommended product, and theapplication provides dynamic directions to the user. In step 507, theuser requests the application to issue a certificate for the recommendedproduct, and the application transmits this request to the server. Instep 508, the server issues the certificate and transmits it to theDevice. In step 509, the Device displays the certificate as a barcode.

Technical Implementation of the Sever

FIG. 6 illustrates exemplary hardware components a server or a Device. Acomputer system 600, or other computer systems similarly configured, mayinclude and execute one or more subsystem components to performfunctions described herein, including the steps of various flowprocesses described above. Likewise, a mobile device, a cell phone, asmartphone, a laptop, a desktop, a notebook, a tablet, a wearabledevice, a server, etc., which includes some of the same components ofthe computer system 600, may run an application (or software) andperform the steps and functionalities described above. Computer system600 may connect to a network 614, e.g., Internet, or other network, toreceive inquires, obtain data, and transmit information and incentivesas described above.

The computer system 600 typically includes a memory 602, a secondarystorage device 604, and a processor 606. The computer system 600 mayalso include a plurality of processors 606 and be configured as aplurality of, e.g., bladed servers, or other known serverconfigurations. The computer system 600 may also include a networkconnection device 608, a display device 610, and an input device 612.

The memory 602 may include RAM or similar types of memory, and it maystore one or more applications for execution by processor 606. Secondarystorage device 604 may include a hard disk drive, floppy disk drive,CD-ROM drive, or other types of non-volatile data storage. Processor 606executes the application(s), such as those described herein, which arestored in memory 602 or secondary storage 604, or received from theInternet or other network 614. The processing by processor 606 may beimplemented in software, such as software modules, for execution bycomputers or other machines. These applications preferably includeinstructions executable to perform the system and subsystem componentfunctions and methods described above and illustrated in the FIGS.herein. The applications preferably provide graphical user interfaces(GUIs) through which users may view and interact with subsystemcomponents.

The computer system 600 may store one or more database structures in thesecondary storage 604, for example, for storing and maintaining theinformation necessary to perform the above-described functions.Alternatively, such information may be in storage devices separate fromthese components.

Also, as noted, processor 606 may execute one or more softwareapplications to provide the functions described in this specification,specifically to execute and perform the steps and functions in theprocess flows described above. Such processes may be implemented insoftware, such as software modules, for execution by computers or othermachines. The GUIs may be formatted, for example, as web pages inHyperText Markup Language (HTML), Extensible Markup Language (XML) or inany other suitable form for presentation on a display device dependingupon applications used by users to interact with the computer system600.

The input device 612 may include any device for entering informationinto the computer system 600, such as a touch-screen, keyboard, mouse,cursor-control device, microphone, digital camera, video recorder orcamcorder. The input and output device 612 may be used to enterinformation into GUIs during performance of the methods described above.The display device 610 may include any type of device for presentingvisual information such as, for example, a computer monitor orflat-screen display (or mobile device screen). The display device 610may display the GUIs and/or output from sub-system components (orsoftware).

Examples of the computer system 600 include dedicated server computers,such as bladed servers, personal computers, laptop computers, notebookcomputers, palm top computers, network computers, mobile devices, or anyprocessor-controlled device capable of executing a web browser or othertype of application for interacting with the system.

Although only one computer system 600 is shown in detail, system 600 mayuse multiple computer systems or servers as necessary or desired tosupport the users and may also use back-up or redundant servers toprevent network downtime in the event of a failure of a particularserver. In addition, although computer system 600 is depicted withvarious components, one skilled in the art will appreciate that thesystem can contain additional or different components. In addition,although aspects of an implementation consistent with the above aredescribed as being stored in a memory, one skilled in the art willappreciate that these aspects can also be stored on or read from othertypes of computer program products or computer-readable media, such assecondary storage devices, including hard disks, floppy disks, orCD-ROM; or other forms of RAM or ROM. The computer-readable media mayinclude instructions for controlling the computer system 600, to performa particular method, such as methods described above.

The present disclosure is not to be limited in terms of the particularembodiments described in this application, which are intended asillustrations of various aspects. Many modifications and variations canbe made without departing from its spirit and scope, as may be apparent.Functionally equivalent methods and apparatuses within the scope of thedisclosure, in addition to those enumerated herein, may be apparent fromthe foregoing representative descriptions. Such modifications andvariations are intended to fall within the scope of the appendedrepresentative claims. The present disclosure is to be limited only bythe terms of the appended representative claims, along with the fullscope of equivalents to which such representative claims are entitled.It is also to be understood that the terminology used herein is for thepurpose of describing particular embodiments only, and is not intendedto be limiting.

1-67. (canceled)
 68. A client device comprising: a processor, a memory,a transceiver and a display, wherein: the transceiver is configured totransmit to a server: a plurality of movement logs, each movement logindicating coordinates of the client device at an indoor location; aplurality of lists of items, each list of items being associated withone of the plurality of movement logs; and an identification code; thetransceiver is configured to receive a floorplan, a designated locationon the floorplan and an item; the processor is configured to determine aroute from a current location of the client device to the designatedlocation; and the display is configured to show the route.
 69. Theclient device of claim 68, further comprising transmitting a couponrequest.
 70. The client device of claim 69, further comprising receivinga coupon.
 71. The client device of claim 70, wherein the coupon includesa QR code.
 72. The client device of claim 68, wherein the coordinates ofthe client device are determined using a triangulation technique. 73.The client device of claim 68, further comprising whether the clientdevice is within the indoor location.
 74. The client device of claim 68,further comprising determining a name of the indoor location.
 75. Theclient device of claim 68, wherein the identification code includes aname.
 76. The client device of claim 68, wherein the identification codeincludes GPS coordinates of the indoor location.
 77. The client deviceof claim 68, wherein the identification code includes an SSID.
 78. Theclient device of claim 68, wherein each list of items includes a pricefor each item.
 79. The client device of claim 68, wherein the processoris further configured to: transmit a request from the client device tothe server to issue a certificate; and receive, from the server, acommunication including the certificate, wherein the certificate isconfigured to be displayed in a user interface of the client device. 80.The client device of claim 79, wherein the communication includes anaccount balance.
 81. The client device of claim 79, wherein thecommunication includes a price for at least one item.
 82. The clientdevice of claim 81, wherein the certificate has a value equal to theprice of the at least one item.
 83. The client device of claim 79,wherein the certificate includes a unique identification number whichcan be redeemed at a cash register.
 84. The client device of claim 83,wherein the unique identification number is configured to be displayedin the user interface of the client device as a matrix bar code.
 85. Theclient device of claim 79, wherein the identification code indicates theindoor location of a third-party.
 86. The client device of claim 79,wherein the certificate is a coupon.
 87. The client device of claim 86,wherein the coupon includes a QR code.